import logging

import pytest

from api.ihrmEmpApi import IhrmEmpApi
from commen.assert_tools import assert_methods
from commen.db_tools import DBUtil
from commen.get_header_tools import get_header
from commen.logging_use_tools import init_log_config
from commen.read_json_tools import read_json_file

from config import TEL, BASE_DIR


class TestAddEmp:
    # 初始化日志文件                         文件名         间隔时间单位      单位个数    保留的备份日志数
    init_log_config(BASE_DIR +"/log/log_homework.log",when='midnight', interval=3, backup_count=2)
    def setup_class(self):        # ---- 类级别前置方法
        self.header = get_header()  # 调用自己封装的 获取请求头函数


    # 调 数据库工具方法,删除 指定手机号    ---- 方法级前置方法
    def setup(self):
        DBUtil.idu_methods(f"delete from bs_user where mobile = '{TEL}';")

    # 调 数据库工具方法,删除 指定手机号    ---- 方法级后置方法
    def teardown(self):
        DBUtil.idu_methods(f"delete from bs_user where mobile = '{TEL}';")

    # 组织 添加员工 json 数据文件路径
    filename = BASE_DIR + "/data/add_data.json"
    # 调用 读取json 文件的 函数,提取[(),(),()]格式数据
    data_file =read_json_file(filename)

    # 定义 测试方法
    @pytest.mark.parametrize("desc,request_data,status_code,success,code,message",data_file) # 参数化 装饰器
    def test_addemp(self,desc,request_data,status_code,success,code,message):
        resp = IhrmEmpApi.add_emp(self.header,request_data) # 调用自己封装好的员工管理接口中添加员工方法
        # 日志输出
        logging.info(f"这是晚自习作业题的日志信息:{resp.json()}")
        # 断言  调用自己封装好的断言方法
        assert_methods(resp,status_code,success,code,message)

    #
    #
    # def test01_add_ok(self):
    #     resp_head = {"Authorization": "Bearer 6bcded8e-5bb1-43cc-9afd-b1c3ec57e506"}
    #     resp_data = {"username": "zs4", "mobile": TEL, "workNumber": "9527"}
    #     resp = IhrmEmpApi.add_emp(resp_head,resp_data)
    #
    #     assert_methods(resp,200,True,10000,"操作成功")
    #
    # def test02_less_params(self):
    #     # 调用 自己封装的 添加员工接口
    #     headers = {"Authorization": "Bearer 8dc45426-bca3-406c-af4d-e267eec3139b"}
    #     req_data = {"mobile": TEL,"workNumber": "9527"
    #     }
    #     resp = IhrmEmpApi.add_emp(headers, req_data)
    #     print("少参：", resp.json())
    #     assert_methods(resp, 200, False, 20002, "新增员工失败")